#生成器 generator
#python中 一边循环一边计算的叫生成器 是程序员自己的写的
#生成器表达式
for i in range(10): #一边循环一边计算
    print(i*10)
#列表推导式 将生成的内容依次填入列表
li = [i*10 for i in range(10)]
print(li)
#将列表推导式的括号改成小括号就是生成器表达式
gen = (i*10 for i in range(10))
print(gen)
#通过next取值
for i in gen:
    print(i)
#生成器函数
#python中使用了 yield关键字的函数,就是生成器函数 yield类似return 将一个多个值返回给调用者
#yield作用 一个yield语句一次返回一个结果,并在下个结果之间挂起函数;当执行next()时,再重新从挂起点执行 就是函数中断,保存中断的状态,下次从中断的地方继续执行
def a():
    yield 1
    print("第二次")
    yield 2
    yield 3
    print("结束")
a1 = a()
print(next(a1))
print(next(a1))
print(next(a1))
#使用生成器函数指定列表长度
def b(n):
    li2 = []
    count = 0
    while count < n:
        li2.append(count)
        yield count
        count += 1
print(b(5))
for i in b(5):
    print(i)
